/**
 * @param {number[]} nums
 * @return {number}
 */
// 以i结尾的最长递增子序列
// 动态规划思维不要固化，可以是以某某结尾，可以是[i, j]区间
// 可以是i与i - 1的关系，也可以是i与小于i所有的关系
var lengthOfLIS = function (nums) {
    // dp[i]表示以i结尾的最长递增子序列，初始化为1
    const dp = new Array(nums.length).fill(1)
    for(let i = 1; i < nums.length; i++) {
        for(let j = 0; j < i; j++) {
            if(nums[i] > nums[j]) {
                dp[i] = Math.max(dp[i], dp[j])
            }
        }
    }
    let ans = 1
    for(let status of dp) {
        if(status > ans) ans = status
    }

    return ans
};